package models

import (
	"gorm.io/gorm"
)

// SkillExchange 技能交换模型
type SkillExchange struct {
	gorm.Model
	Title          string `json:"title" gorm:"size:100;not null"`
	Description    string `json:"description" gorm:"type:text"`
	RequesterID    uint   `json:"requester_id"`                            // 请求者ID
	ProviderID     uint   `json:"provider_id"`                             // 提供者ID
	RequestSkill   string `json:"request_skill" gorm:"type:text"`          // 需求技能/物品
	OfferSkill     string `json:"offer_skill" gorm:"type:text"`            // 提供技能/物品
	Status         string `json:"status" gorm:"size:20;default:'pending'"` // pending, accepted, completed, canceled
	WitnessID      uint   `json:"witness_id"`                              // 见证人ID
	ScheduledTime  int64  `json:"scheduled_time"`                          // 预定时间戳
	CompletionTime int64  `json:"completion_time"`                         // 完成时间戳
}

// ExchangeReview 交换评价模型
type ExchangeReview struct {
	gorm.Model
	ExchangeID uint   `json:"exchange_id"`
	ReviewerID uint   `json:"reviewer_id"`             // 评价者ID
	Rating     int    `json:"rating" gorm:"default:5"` // 评分(1-5)
	Comment    string `json:"comment" gorm:"type:text"`
	IsWitness  bool   `json:"is_witness" gorm:"default:false"` // 是否是见证人评价
}

// CreditScore 用户信用分模型
type CreditScore struct {
	gorm.Model
	UserID      uint   `json:"user_id" gorm:"unique"`
	Score       int    `json:"score" gorm:"default:100"`      // 初始100分
	PigeonCount int    `json:"pigeon_count" gorm:"default:0"` // 违约次数
	Badge       string `json:"badge" gorm:"size:50"`          // 信用徽章
}

// CreateSkillExchange 创建技能交换请求
func CreateSkillExchange(exchange *SkillExchange) error {
	return GetDB().Create(exchange).Error
}

// UpdateExchangeStatus 更新交换状态
func UpdateExchangeStatus(id uint, status string) error {
	return GetDB().Model(&SkillExchange{}).Where("id = ?", id).Update("status", status).Error
}
